.section	.rodata
.LC0:
	.string	"this is a."
.LC1:
	.string	"this is b."
.LC2:
	.string	"i don't know what the char is"

.text
.globl main
.type main, @function
main:
    pushq %rbp
    movq %rsp, %rbp

    subq $16, %rsp

    call getchar
    movb %al, -4(%rbp)
    movsbl -4(%rbp), %eax
    cmp $'a', %eax
    je .L3
    cmp $'b', %eax
    je .L4
    jmp .L5

.L3:
    // 以下语句等同于 movq $.LC0, %rdi
    leaq .LC0(%rip), %rdi
    call puts
    // 加不加break的区别就在于有没有以下的jmp，如果没有，就不会有以下jmp语句，也就是说，可以继续执行.L4
    // 因此没有break就会连续执行
    jmp .L6
.L4:
    leaq .LC1(%rip), %rdi
    call puts
    jmp .L6
.L5:
    leaq .LC2(%rip), %rdi
    call puts
.L6:    

    movl $0, %eax
    movq %rbp, %rsp
    popq %rbp
    ret